export const getInputs = () => [[[4, 3, 1, 2, 4]], [[1, 10, 4]], [[0]], [[0, 0]]];

/**
 * **[6317. 统计美丽子数组数目](https://leetcode.cn/contest/weekly-contest-336/problems/count-the-number-of-beautiful-subarrays/)**
 *
 * 给你一个下标从 **0** 开始的整数数组`nums` 。每次操作中，你可以：
 * - 选择两个满足 `0 <= i, j < nums.length` 的不同下标 `i` 和 `j` 。
 * - 选择一个非负整数 `k` ，满足 `nums[i]` 和 `nums[j]` 在二进制下的第 `k` 位（下标编号从 **0** 开始）是 `1` 。
 * - 将 `nums[i]` 和 `nums[j]` 都减去 `2^k` 。
 *
 * 如果一个子数组内执行上述操作若干次后，该子数组可以变成一个全为 `0` 的数组，那么我们称它是一个 **美丽** 的子数组。
 * 请你返回数组 `nums` 中 **美丽子数组** 的数目。
 * 子数组是一个数组中一段连续 **非空** 的元素序列。
 *
 * @param nums
 * @returns
 */
export default function beautifulSubarrays(nums: number[], countSelf?: boolean): number {
	let result = 0;
	const map = new Map();
	let s = 0;
	map.set(s, 1);
	nums.forEach((num) => {
		s ^= num;
		const value = map.get(s) || 0;
		result += value;
		map.set(s, value + 1);
		console.log(num, s, map);
	});

	return result;
}
